// node 21_for循环和splice的坑.js

//for in 循环中的获得的索引值不能被手动更改，尽量在使用for in 时不要对数组本身进行更改

//在对数组执行for循环时，删除数组的元素，会存在什么问题?


let arr = ['a','a','a','b','c','a','d']

// for(let i =0 ; i < arr.length ; i++){
//     if(arr[i] === 'a'){
//         arr.splice(i,1)
//     }
// }
//正确输出:[ 'b', 'c', 'd' ]
//实际输出:[ 'a', 'b', 'c', 'd' ]
//原因:arr数组索引被改变，导致按索引取值跳过了部分数组元素

//优化1
for(let i =0 ; i < arr.length ; i++){
    if(arr[i] === 'a'){
        arr.splice(i,1)
        i--//优化1：手动矫正索引值
    }
}

let arr2 = ['a','a','a','b','c','a','d']
//优化2
//倒序遍历
for(let i = arr2.length-1 ; i >= 0 ; i--){
    if(arr2[i] === 'a'){
        arr2.splice(i,1)
    }
}

console.log(arr)
console.log(arr2)